#pragma once
#include "precompiled.h"
#include "Geometry_Defines.h"
#include "Common.h"

/*	File : RenderDefines.h
 *
 *	Contains things like the RenderTicket declaration, default screen
 *  resolution, Render To Texture passes...
 */

// Defines.
	
	// The buffer sizes at which to render to at all times. Theres a neat
	// trick done in DOOM3 and Lost Planet II where you render to a smaller
	// buffer size and scale it to your desired resolution when presenting.
static const int RENDER_WIDTH = 640;
static const int RENDER_HEIGHT = 480;

// A collection of stuff needed to render an object.
typedef struct{
	std::string modelKey;
	std::string materialKey;
	TransformationCore* transform;
}ModelBundle;

// A collection of possible shader values.
typedef struct{
	float flash;			// Is the object flashing?
}ShaderArguments;

// Declarations.
	// Taken from Preisz and Garney 2011.
typedef struct{
	ShaderArguments* shadargs;		// The rendering may have shader values it needs to give.
	float distance;					// The objects distance from the camera.
	ModelBundle bundle;				// The data needed for rendering (vertices/indices/buffs/transforms).
	Vertex_P* ref_point_vertexBuffer;		// Vertex Buffer to a list of points.
	GLuint point_count;				// The number of points;
}RenderTicket;